Possible EventEmitter memory leak detected. が出たとき
client.on('message', ...) など foo.on() で多くのイベントハンドラを EventEmitter に登録するとこの警告が出る エラーではなく警告であったり、"Possible" (可能性)と表現されているように必ずしも問題だということではない
問題無いケース
code:js
client.on('message', () => { ... })
client.on('message', () => { ... })
client.on('message', () => { ... })
このように処理ごとに client.on('message', ...) を書いてたりすると10個を超えたときに警告が出る
ほとんどの場合は1つに統合することができるが、警告が気にならないのであれば別に問題はない
問題があるケース
code:js
client.on('message', () => {
client.on('message', () => { ... })
})
これはメッセージが送信されるたびにイベントハンドラを登録している
つまり100件メッセージが送信されたら100個も新たに追加されてしまう
次にメッセージが送信されると追加された全てのイベントハンドラが実行されるのでとても効率が悪い
同じ処理が何回も実行されてしまうので意図しない動作につながる